/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pl.edu.amu.wmi.kino.visualjavafx.javafxcodegenerators.api;

/**
 * Basic interface common to all code generators
 *
 * @author Admin
 */

public interface Generator {
    /**
     * This method should return true if generator can generate code from class c
     * from the model, else it should return false
     * 
     * @param c
     * @return
     */
    public boolean canGenerate(Object c);
    /**
     * This method should generate ALL code of the Object o by appending it to given 
     * StringBuilder - including other object it contains - (typically it means calling
     * methods of appropriate helpergenerators inside this method)
     * @param sb
     * @param o
     * @param recursionLevel
     */
    public void generate(StringBuilder sb,Object o,int recursionLevel,Object original);
}
